/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dao;

import Beans.CategoriaBean;
//import Conexion.Conexion;
import Beans.ProveedorBean;
import Conexion.Conexion;
import java.sql.ResultSet;
import java.util.Vector;

/**
 *
 * @author orellana
 */
public class CategoriaDAO {

    // Atributos de la clase
    public static String INSERT_DATOS_CATEGORIA = "INSERT INTO cat_categorias(idLineaProducto,nombreCategoria, descripcionCategoria, fechaAlta, idEstado) VALUES";
 //   public static String GET_DATOS_CATEGORIAS = "SELECT idCategoria, nombreCategoria, descripcionCategoria FROM cat_categorias WHERE idEstado=1 ORDER BY nombreCategoria;";
    public static String GET_DATOS_CATEGORIAS= "SELECT "+
                                                        "cat.nombreCategoria As nombreCategoria,"+
                                                        "cat.descripcionCategoria As descripcionCategoria,"+
                                                        "lin.nombreLineaProducto As nombreLineaProducto,"+
                                                        "cat.idCategoria As idCategoria"+
                                                        " FROM "+
                                                        "cat_categorias cat,"+
                                                        "cat_linea_productos lin"+
                                                        " WHERE "+
                                                        "cat.idLineaProducto=lin.idLineaProducto AND "+
                                                        "cat.idEstado=1;";
    public static String GET_DATOS_CATEGORIA =  "SELECT nombreCategoria, descripcionCategoria,idLineaProducto,idCategoria FROM cat_categorias WHERE idCategoria= ";
    public static String DELETE_DATOS_CATEGORIA="UPDATE cat_categorias SET idEstado=2 WHERE ";
    public static String GET_ID_CATEGORIA="SELECT auto_increment FROM information_schema.tables WHERE table_schema='bd_pegaso' AND table_name='cat_categorias'";
    public static String UPDATE_DATOS_CATEGORIA="UPDATE cat_categorias SET";
    public static String GET_DATOS_CATEGORIA_ACTIVOS = "SELECT idCategoria, nombreCategoria, descripcionCategoria FROM cat_categorias WHERE ";
    public static String GET_CATEGORIAS_ID_LINEA_PRODUCTO="SELECT nombreCategoria FROM cat_categorias ";
    public static String GET_DATOS_CATEGORIA_COMBO="SELECT nombreCategoria,idCategoria FROM cat_categorias WHERE idEstado=1";
    public static String GET_NOMBRE_CATEGORIA_ID="SELECT idCategoria FROM cat_categorias ";

    // Metodos publicos
    // Insertamos los datos de la categoria
    public Vector insertDatosCategoria (CategoriaBean categoriaBean, Conexion conect){
        // Variables locales
        Vector resultDatos=new Vector();

        // Insertamos los datos de las categorias
        try {
            conect.getPreparedStatement().execute(INSERT_DATOS_CATEGORIA +"("+categoriaBean.getIdLineaProducto() +""+",'"+categoriaBean.getNombreCategoria() +"'"+",'"+categoriaBean.getDescripcionCategoria()+"'"+",NOW()"+",1);");
            resultDatos.add("OK");
        } catch (Exception e) {
            resultDatos.add("ERROR");
            // Mensaje en consola
            System.out.println("Erro: "+e);
        }
        // Retornamos el valor
        return resultDatos;
    }

        // Actualizamos los Datos dela categoria
    public Vector updateDatosCategoria(CategoriaBean categoriaBean,Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Actualizamos los Datos dela categoria
        try {
            conect.getPreparedStatement().execute(UPDATE_DATOS_CATEGORIA+
                    " nombreCategoria='"+categoriaBean.getNombreCategoria()+"'"+
                    ",descripcionCategoria='"+categoriaBean.getDescripcionCategoria()+"'"+
                    ",idLineaProducto='"+categoriaBean.getIdLineaProducto()+"'"+
                    ",fechaModificacion=NOW() WHERE idCategoria="+categoriaBean.getIdCategoria());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }


    // Obtenemos los datos de la categorias
    public Vector getDatosCategorias (CategoriaBean categoriaBean, Conexion conect){
    // Variables locales
        Vector resultDatos=new Vector();
        // Obtenemos los datos de la categoria
        try{
        ResultSet resultSet = conect.getPreparedStatement().executeQuery(GET_DATOS_CATEGORIAS);
            while (resultSet.next()){
            CategoriaBean getDatosCategorias=new CategoriaBean();
            getDatosCategorias.setNombreCategoria(resultSet.getString("nombreCategoria"));
            getDatosCategorias.setDescripcionCategoria(resultSet.getString("descripcionCategoria"));
            getDatosCategorias.setDesLinea(resultSet.getString("nombreLineaProducto"));
            getDatosCategorias.setIdCategoria(resultSet.getString("idCategoria"));
            resultDatos.add(getDatosCategorias);
            }
        } catch (Exception e) {
            // Mensaje en consola
            System.out.println("ERROR: " +e);
        }
            // Retornamos el valor
            return resultDatos;
    }

    // Obtenemos el Proximo Identificador dela Categoria
    public Vector getIdCategoria(CategoriaBean categoriaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos el Identificador dela Categoria
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_ID_CATEGORIA);
            while(resultSet.next()){
                CategoriaBean getIdCategoria=new CategoriaBean();
                getIdCategoria.setIdCategoria(resultSet.getString("auto_increment"));
                resultDatos.add(getIdCategoria);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :" + e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

     // Eliminamos los Datos de la Categoria (Logica)
    public Vector deleteDatosCategoria(CategoriaBean categoriaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Eliminamos los Datos dela categoria
        try {
            conect.getPreparedStatement().execute(DELETE_DATOS_CATEGORIA+
                    " idCategoria= " + categoriaBean.getIdCategoria());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos los datos de la categoria
    public Vector getDatosCategoria (CategoriaBean categoriaBean, Conexion conect){
    // Variables locales
        Vector resultDatos=new Vector();
        // Obtenemos los datos de la categoria
        try{
          //  System.out.println(" akiii" +GET_DATOS_CATEGORIA+categoriaBean.getIdCategoria() + " AND idEstado=1");
        ResultSet resultSet = conect.getPreparedStatement().executeQuery(GET_DATOS_CATEGORIA+categoriaBean.getIdCategoria() + " AND idEstado=1");
        //System.out.println("imprime "+resultSet);
            while (resultSet.next()){
            CategoriaBean getDatosCategoria=new CategoriaBean();
            getDatosCategoria.setNombreCategoria(resultSet.getString("nombreCategoria"));
            getDatosCategoria.setDescripcionCategoria(resultSet.getString("descripcionCategoria"));
            getDatosCategoria.setIdLineaProducto(resultSet.getString("idLineaProducto"));
            getDatosCategoria.setIdCategoria(resultSet.getString("idCategoria"));
            resultDatos.add(getDatosCategoria);
            }
        } catch (Exception e) {
            // Mensaje en consola
            System.out.println("ERROR: " +e);
        }
            // Retornamos el valor
            return resultDatos;
    }
    
    // Busqueda de Categoria Registrados con Estatus Activo (1)
    public Vector buscarDatosCategoriaActivo(CategoriaBean categoriaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Buscamos los Clientes Registrados
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_CATEGORIA_ACTIVOS+
                    "nombreCategoria LIKE '%"+categoriaBean.getNombreCategoria()+"%' AND idEstado = 1 ORDER BY nombreCategoria");
            while(resultSet.next()){
                CategoriaBean getDatosCategoriaActivos=new CategoriaBean();
                getDatosCategoriaActivos.setNombreCategoria(resultSet.getString("nombreCategoria"));
                getDatosCategoriaActivos.setDescripcionCategoria(resultSet.getString("descripcionCategoria"));
                getDatosCategoriaActivos.setIdCategoria(resultSet.getString("idCategoria"));
                resultDatos.add(getDatosCategoriaActivos);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos las Categorias por Linea de Producto
    public Vector getDatosCategoriasByIdLineaProducto(CategoriaBean categoriaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos las categorias por Linea de Producto
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_CATEGORIAS_ID_LINEA_PRODUCTO+
                    "WHERE idLineaProducto="+categoriaBean.getIdLineaProducto()+" AND idEstado=1");
            while(resultSet.next()){
                CategoriaBean getDatosCategoria=new CategoriaBean();
                getDatosCategoria.setNombreCategoria(resultSet.getString("nombreCategoria"));
                resultDatos.add(getDatosCategoria);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Busqueda de categoria Registrados con Estatus Activo (1) para mostrarlo en el combo
    public Vector buscarDatosCategoriaCombo(CategoriaBean categoriaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Buscamos bancos Registrados
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_CATEGORIA_COMBO);
            while(resultSet.next()){
                CategoriaBean getDatosCategoriaCombo=new CategoriaBean();
                getDatosCategoriaCombo.setNombreCategoria(resultSet.getString("nombreCategoria"));
                getDatosCategoriaCombo.setIdCategoria(resultSet.getString("idCategoria"));
                resultDatos.add(getDatosCategoriaCombo);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos el ID de la categoria de Producto por Nombre mediante la seleccion del combo
    public Vector getIdCategoriaProducto(CategoriaBean categoriaBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos el ID categoria de Producto por Nombre
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_NOMBRE_CATEGORIA_ID +
                    "WHERE nombreCategoria='"+categoriaBean.getNombreCategoria()+"'");
            while(resultSet.next()){
                CategoriaBean getDatosCategoria=new CategoriaBean();
                getDatosCategoria.setIdCategoria(resultSet.getString("idCategoria"));
                resultDatos.add(getDatosCategoria);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR :"+e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

}
